//
// Created by ls on 23-12-24.
//
#include <iostream>
#include <queue>

/*
 * 有 5 名选手：选手 ABCDE,10 个评委分别对每一名选手打分，去除最高分，去除评委中最低分，取平均分
 */

class Person
{
public:
    Person(std::string name, int age)
    {
        this->m_Name  = std::move(name);
        this->m_Age = age;
    }
    std::string m_Name;   // 姓名
    int m_Age;          // 平均分
};

void createPerson(std::vector<Person> &v)
{
    std::string nameSeed = "ABCDE";
    for (int i = 0; i < 5; i++) {
        std::string name = "选手";
        name += nameSeed[i];

        int score = 0;

        Person p(name, score);
        v.push_back(p);
    }
}

void test01()
{
    // 创建队列
    std::queue<Person> q;

    // 准备数据
    Person p1("唐僧", 30);
    Person p2("孙悟空", 1000);
    Person p3("猪八戒", 900);
    Person p4("沙僧", 800);

    // 向队列中添加元素，入队操作
    q.push(p1);
    q.push(p2);
    q.push(p3);
    q.push(p4);

    // 队列不提供迭代器，更不支持随机访问
    while (!q.empty()) {
        // 输出队头元素
        std::cout << "队头元素-- 姓名：" << q.front().m_Name
                  << " 年龄：" << q.front().m_Age << std::endl;

        std::cout << "队尾元素-- 姓名：" << q.back().m_Name
                  << "年龄: " << q.back().m_Age << std::endl;

        std::cout << std::endl;
        // 弹出队头元素
        q.pop();
    }
    std::cout << "队列大小为：" << q.size() << std::endl;
}

int main()
{
    test01();
    return 0;
}
